Standard DI resolves all providers at bootstrap time. LazyModuleLoader defers a module's initialization until its providers are first accessed at runtime. After the first load the module is cached. It is useful for heavy optional modules like PDF generation or image processing that are rarely invoked.
Standard DI — all providers instantiated at app startup; module graph fully resolved before app accepts requests.
LazyModuleLoader — module initialized on first access; reduces startup time and memory for rarely-used features.
Lazy modules are cached after first load — subsequent calls use the same module instance.
Controllers cannot be lazy-loaded — only service-level providers in the lazy module.
Best for: report generation, image processing, export features, admin-only operations.